package com.it.base.arithmetic.base.dm.observer;

import java.util.ArrayList;
import java.util.List;

/**
 * 抽象主题类,持有一个容器，容器中是抽象观察者,提供三个方法，注册、删除、通知所有观察者
 */
public abstract class  Subject {
    protected List<Observer> observerList = new ArrayList<>();

    /**
     * 注册
     * @param observer
     */
    public void  register(Observer observer){

        this.observerList.add(observer);
    }
    /**
     *从容器中移除一个观察者
     */
   public void remove(Observer observer){
       this.observerList.remove(observer);
   }

    /**
     * 通知所有观察者的抽象方法，让子类实现
     */
    public   abstract void notifyObserver();
}
